大多数编程语言中，名称是一个基本概念。它们是开发者可以引用之前构造的实体的方法。C++编译器遇到一个名称时，必须“查找”以识别所引用的实体。从实现者的角度来看，C++在这方面是一门很难的语言。C++语句x*y;，如果x和y是变量名，这条语句就是一个乘法语句，但如果x是类型名，那么这条语句将y声明为指向类型为x的实体的指针。

这个小示例表明C++(像C一样)是一种上下文敏感的语言:若不了解上下文，就不能总是理解一个构造。这与模板有什么关系?模板构造必须处理多个上下文:(1)模板出现的上下文，(2)模板实例化的上下文，(3)模板实例化的模板参数相关的上下文。因此，在C++中必须非常小心地处理“名称”。